package com.good.test;

public class InnerClass {
	private int i = 1;

	/*
	 * class Inner{ public void t1(){ System.out.println(i); } }//one
	 */
	/*
	 * class Inner{ private int i=2; public void t2(){ int i=3;
	 * System.out.println(i); System.out.println(this.i);
	 * System.out.println(InnerClass.this.i); } }//two
	 */
	/*
	 * private static int j=2; static class In{ public void t3(){
	 * System.out.println(j); } }
	 */
	/*
	 * private class In { public void t4() { System.out.println(i); }
	 * 
	 * 
	 * 如果一个内部类只希望被外部类中的方法操作，那么可以使用private声明内部类
	 * 
	 * 上面的代码中，我们必须在Out类里面生成In类的对象进行操作，而无法再使用Out.In in = new Out().new In()
	 * 生成内部类的对象
	 * 
	 * 也就是说，此时的内部类只有外部类可控制
	 * 
	 * 如同是，我的心脏只能由我的身体控制，其他人无法直接访问它
	 * 
	 * }
	 */

	/*
	 * public void tt() { new In().t4(); }
	 */
	//方法内部类
	public void Print(final int x) {
		class In {
			public void inPrint() {
				System.out.println(x);
				System.out.println(i);
			}
		}
		new In().inPrint();
	}

	public static void main(String[] args) {
		/*
		 * InnerClass.Inner in=(new InnerClass()).new Inner(); in.t1();//one
		 */
		/*
		 * InnerClass.Inner in=(new InnerClass()).new Inner(); in.t2();//3 2 1
		 * //two
		 */
		/*
		 * InnerClass.In in=new InnerClass.In(); in.t3();
		 */
		/* new InnerClass().tt(); */
		new InnerClass().Print(2);
	}
}
